package com.mp.dao;

import com.mp.db.jpa.modelo.GeoLocalizacao;
import com.mp.db.jpa.modelo.HistoricoPreco;
import com.mp.db.jpa.modelo.Item;
import com.mp.db.jpa.modelo.NomeclaturaLocal;
import com.mp.db.jpa.modelo.Usuario;
import com.mp.db.jpa.util.JPAUtil;
import java.util.List;
import javax.persistence.Query;


public class HistoricoPrecoDAO extends GenericoDAO
{
    
    public HistoricoPreco obterHistoricoPreco(int id)
    {
        Query query =  em.createNamedQuery("HistoricoPreco.findById");
        query.setParameter("id", id);
            
        return (HistoricoPreco)this.getSingleResultOrNull(query);
    }
    
    
    public List<HistoricoPreco> obterListaHistoricoPrecoPorItem(Item item)
    {
        Query query =  em.createNamedQuery("HistoricoPreco.findAllByItem");
        query.setParameter("id", item.getIdItem());
        
        return query.getResultList();
    }
    
     public List<HistoricoPreco> obterListaHistoricoPrecoPorItem(Item item,Usuario usr)
    {
        Query query =  em.createNamedQuery("HistoricoPreco.findAllByItemUsr");
        query.setParameter("idItem", item.getIdItem());
        query.setParameter("idUsuario", usr.getIdUsuario());
        
        return query.getResultList();
    }
    
    public List<HistoricoPreco> obterListaHistoricoPrecoPorUsuario(Usuario usr)
    {
        Query query =  em.createNamedQuery("HistoricoPreco.findAllByUser");
        query.setParameter("id", usr.getIdUsuario());
        
        return query.getResultList();
    }
    
    public List<HistoricoPreco> obterListaHistoricoPrecoPorGeoLocalizacaoItem(GeoLocalizacao geo,Item item)
    {
        Query query =  em.createNamedQuery("HistoricoPreco.findAllByGeoItem");
        query.setParameter("lat", geo.getDescLatitude());
        query.setParameter("lon", geo.getDescLongitude());
        query.setParameter("idItem", item.getIdItem());
        
        return query.getResultList();
    }
     
    public List<HistoricoPreco> obterListaHistoricoPrecoPorNomeclaturaLocal(NomeclaturaLocal nom)
    {
        Query query =  em.createNamedQuery("HistoricoPreco.findAllByNomeclaturaLocal");
        query.setParameter("id", nom.getIdNomeclaturaLocal());
        
        return query.getResultList();
    }
    
    public List<HistoricoPreco> obterHistoricoPrecoPorNomeclaturaLocalItem(int idNomeclaturaLocal, int idItem)
    {
        Query query =  em.createNamedQuery("HistoricoPreco.findAllByNomeclaturaLocalAndItem");
        query.setParameter("idNomeclaturaLocal", idNomeclaturaLocal);
        query.setParameter("idItem", idItem);
        
        return query.getResultList();
    }
    
    public void gravarHistoricoPreco(HistoricoPreco hp)
    {
       JPAUtil.gravar(hp);
    }
}
